Main
Expression specificity (tau)
Plot - Tau distribution
All genes with tau
if (!params$all.nonzero.matrix) {
plot_tau_distribution(filtered.samples$tau,
tau.low=params$tau.cutoff, tau.high=params$tau.cutoff,
ylim=c(0.0,1.5))
} else {
plot_tau_distribution(filtered.samples$tau,
tau.low=params$tau.cutoff, tau.high=params$tau.cutoff,
ylim=c(0.0,3.6))
}
With tau and expression variability data
tau.with.var <-
filtered.samples$tau[names(filtered.samples$tau) %in% levels(as.factor(expr.var.common$GeneID))]
if (!params$all.nonzero.matrix) {
plot_tau_distribution(tau.with.var,
tau.low=params$tau.cutoff, tau.high=params$tau.cutoff,
ylim=c(0.0,1.5))
} else {
plot_tau_distribution(tau.with.var,
tau.low=params$tau.cutoff, tau.high=params$tau.cutoff,
ylim=c(0.0,3.6))
}
Variability as a function of tau
Reorder organs for plotting
expr.var.rank.common <- expr.var.common %>%
dplyr::inner_join(expr.rank.first, by="GeneID")
if ("Sex" %in% colnames(filtered.samples$metadata)) {
levels.order <-
c("brain","eye","intestine","liver",
"heart","muscle","gills","pectoral_fin",
"ovary","testis")
} else {
levels.order <-
c("brain","eye","intestine","liver",
"heart","muscle","gills","pectoral_fin","gonads")
}
# Exclude missing conditions from factor levels
levels.exclude <- setdiff(levels.order, levels(as.factor(expr.var.rank.common$Tissue)))
# Reorder levels for plotting
expr.var.rank.common$Tissue <-
factor(expr.var.rank.common$Tissue, levels=levels.order, exclude=levels.exclude)
Density plots
Variability rank vs. mean expression
density_plot_variability_vs_mean(expr.var.rank.common, title=params$species.name)
Mean expression vs. tau
density_plot_mean_vs_tau(expr.var.rank.common, title=params$species.name)
Residual variation vs. tau
density_plot_resid_var_vs_tau(expr.var.rank.common, title=params$species.name)
Variability rank vs. tau
density_plot_variability_vs_tau(expr.var.rank.common, title=params$species.name)
Boxplots by tau quantiles
Split by tau quantiles
tau.with.var.quantiles <- quantile(tau.with.var)
expr.var.rank.common$Quantile <-
apply(expr.var.rank.common, MARGIN=1, function(r) {
if (r[["tau"]] <= tau.with.var.quantiles["25%"]) { "Q1" }
else if (r[["tau"]] <= tau.with.var.quantiles["50%"]) { "Q2" }
else if (r[["tau"]] <= tau.with.var.quantiles["75%"]) { "Q3" }
else { "Q4" }
})
print(tau.with.var.quantiles)
## 0% 25% 50% 75% 100%
## 0.04052094 0.28251264 0.50251154 0.76559685 1.00000000
Mean expression
boxplot_mean_by_tau_quantiles(expr.var.rank.common, title=species.name)
Residual variation
boxplot_resid_var_by_tau_quantiles(expr.var.rank.common, title=species.name)
Variability rank
boxplot_variability_by_tau_quantiles(expr.var.rank.common, title=species.name)
Variability of organ-biased genes
Classify broadly expressed and organ-biased genes (with subsets)
Tissue <- as.factor(expr.var.rank.common$Tissue)
# Per organ, classify genes by organ bias
if ("Sex" %in% colnames(expr.var.rank.common)) {
expr.var.bias.by.condition <- vector(mode="list", length=2)
names(expr.var.bias.by.condition) <- c("F","M")
for (s in c("F","M")) {
expr.var.bias.by.condition[[s]] <- vector(mode="list", length=length(levels(Tissue)))
names(expr.var.bias.by.condition[[s]]) <- levels(Tissue)
for (t in levels(Tissue)) {
expr.var.bias.by.condition[[s]][[t]] <- expr.var.rank.common %>%
dplyr::filter(Sex==s) %>%
dplyr::filter(Tissue!=t) %>%
classify_genes_by_organ_bias(tau.cutoff=params$tau.cutoff)
# Reorder factor levels
expr.var.bias.by.condition[[s]][[t]]$TissueBias <-
factor(expr.var.bias.by.condition[[s]][[t]]$TissueBias, levels=c("broad","focal",t,"other"))
}
}
} else {
expr.var.bias.by.condition <- vector(mode="list", length=length(levels(Tissue)))
names(expr.var.bias.by.condition) <- levels(Tissue)
for (t in levels(Tissue)) {
expr.var.bias.by.condition[[t]] <- expr.var.rank.common %>%
dplyr::filter(Tissue!=t) %>%
classify_genes_by_organ_bias(tau.cutoff=params$tau.cutoff)
# Reorder factor levels
expr.var.bias.by.condition[[t]]$TissueBias <-
factor(expr.var.bias.by.condition[[t]]$TissueBias, levels=c("broad","focal",t,"other"))
}
}
Boxplots by organ bias
Mean expression
if ("Sex" %in% colnames(expr.var.rank.common)) {
for (s in c("F","M")) {
for (t in levels(Tissue)) {
print(boxplot_mean_by_organ_bias(expr.var.bias.by.condition[[s]][[t]],
species=params$species, tissue=t, sex=s))
}
}
} else {
for (t in levels(Tissue)) {
print(boxplot_mean_by_organ_bias(expr.var.bias.by.condition[[t]],
species=params$species, tissue=t))
}
}
Residual variation
if ("Sex" %in% colnames(expr.var.rank.common)) {
for (s in c("F","M")) {
for (t in levels(Tissue)) {
print(boxplot_resid_var_by_organ_bias(expr.var.bias.by.condition[[s]][[t]],
species=params$species, tissue=t, sex=s))
}
}
} else {
for (t in levels(Tissue)) {
print(boxplot_resid_var_by_organ_bias(expr.var.bias.by.condition[[t]],
species=params$species, tissue=t))
}
}
Variability rank
if ("Sex" %in% colnames(expr.var.rank.common)) {
for (s in c("F","M")) {
for (t in levels(Tissue)) {
print(boxplot_variability_by_organ_bias(expr.var.bias.by.condition[[s]][[t]],
species=params$species, tissue=t, sex=s))
}
}
} else {
for (t in levels(Tissue)) {
print(boxplot_variability_by_organ_bias(expr.var.bias.by.condition[[t]],
species=params$species, tissue=t))
}
}
Supplementary
Brain-biased genes
bias <- "brain"
if ("Sex" %in% colnames(expr.var.rank.common)) {
expr.var.brain.bias <-
dplyr::bind_rows(expr.var.bias.by.condition[["F"]][[bias]], expr.var.bias.by.condition[["M"]][[bias]])
} else {
expr.var.brain.bias <- expr.var.bias.by.condition[[bias]]
}
# Same, just different colors
if (params$randomized.mean.expr) {
boxplot_variability_example(expr.var.brain.bias, tissue=bias, species=params$species.name, color="#FFFAFA")
} else {
boxplot_variability_example(expr.var.brain.bias, tissue=bias, species=params$species.name, color="#67005D")
boxplot_variability_example(expr.var.brain.bias, tissue=bias, species=params$species.name, color="#00BFC4")
}
Liver-biased genes
bias <- "liver"
if ("Sex" %in% colnames(expr.var.rank.common)) {
expr.var.liver.bias <-
dplyr::bind_rows(expr.var.bias.by.condition[["F"]][[bias]], expr.var.bias.by.condition[["M"]][[bias]])
} else {
expr.var.liver.bias <- expr.var.bias.by.condition[[bias]]
}
# Same, just different colors
if (params$randomized.mean.expr) {
boxplot_variability_example(expr.var.liver.bias, tissue=bias, species=params$species.name, color="#FFFAFA")
} else {
boxplot_variability_example(expr.var.liver.bias, tissue=bias, species=params$species.name, color="#FF8A00")
boxplot_variability_example(expr.var.liver.bias, tissue=bias, species=params$species.name, color="#F8766D")
}
Ovary- or gonads-biased genes
if ("Sex" %in% colnames(expr.var.rank.common)) {
bias <- "ovary"
expr.var.ovary.bias <-
dplyr::bind_rows(expr.var.bias.by.condition[["F"]][[bias]], expr.var.bias.by.condition[["M"]][[bias]])
if (params$randomized.mean.expr) {
boxplot_variability_example(expr.var.ovary.bias, tissue=bias, species=params$species.name, color="#FFFAFA")
} else {
boxplot_variability_example(expr.var.ovary.bias, tissue=bias, species=params$species.name, color="#67005D")
boxplot_variability_example(expr.var.ovary.bias, tissue=bias, species=params$species.name, color="#00BFC4")
}
} else {
bias <- "gonads"
expr.var.gonads.bias <- expr.var.bias.by.condition[[bias]]
if (params$randomized.mean.expr) {
boxplot_variability_example(expr.var.gonads.bias, tissue=bias, species=params$species.name, color="#FFFAFA")
} else {
boxplot_variability_example(expr.var.gonads.bias, tissue=bias, species=params$species.name, color="#67005D")
boxplot_variability_example(expr.var.gonads.bias, tissue=bias, species=params$species.name, color="#00BFC4")
}
}
Examples
Brain-biased genes expressed in the pectoral fin
bias <- "brain"
focal <- "pectoral_fin"
if ("Sex" %in% colnames(expr.var.rank.common)) {
sex <- "F"
brain.biased.in.pecfin <-
expr.var.bias.by.condition[[sex]][[bias]] %>%
dplyr::filter(Tissue==focal)
} else {
brain.biased.in.pecfin <-
expr.var.bias.by.condition[[bias]] %>%
dplyr::filter(Tissue==focal)
}
if (params$randomized.mean.expr) {
print(boxplot_variability_example(
brain.biased.in.pecfin, species=params$species.name, tissue=bias, ylab="Variability rank", color="#FFFAFA"))
} else {
print(boxplot_variability_example(
brain.biased.in.pecfin, species=params$species.name, tissue=bias, ylab="Variability rank", color="#67005D"))
print(boxplot_variability_example(
brain.biased.in.pecfin, species=params$species.name, tissue=bias, ylab="Variability rank", color="#00BFC4"))
}
Liver-biased genes expressed in the intestine
bias <- "liver"
focal <- "intestine"
if ("Sex" %in% colnames(expr.var.rank.common)) {
sex <- "F"
liver.biased.in.intestine <-
expr.var.bias.by.condition[[sex]][[bias]] %>%
dplyr::filter(Tissue==focal)
} else {
liver.biased.in.intestine <-
expr.var.bias.by.condition[[bias]] %>%
dplyr::filter(Tissue==focal)
}
if (params$randomized.mean.expr) {
print(boxplot_variability_example(
liver.biased.in.intestine, species=params$species.name, tissue=bias, ylab="Variability rank", color="#FFFAFA"))
} else {
print(boxplot_variability_example(
liver.biased.in.intestine, species=params$species.name, tissue=bias, ylab="Variability rank", color="#FF8A00"))
print(boxplot_variability_example(
liver.biased.in.intestine, species=params$species.name, tissue=bias, ylab="Variability rank", color="#F8766D"))
}
Ovary-biased (or gonads-biased) genes expressed in the eye
focal <- "eye"
if ("Sex" %in% colnames(expr.var.rank.common)) {
bias <- "ovary"
sex <- "F"
ovary.biased.in.eye <-
expr.var.bias.by.condition[[sex]][[bias]] %>%
dplyr::filter(Tissue==focal)
if (params$randomized.mean.expr) {
print(boxplot_variability_example(
ovary.biased.in.eye, species=params$species.name, tissue=bias, ylab="Variability rank", color="#FFFAFA"))
} else {
print(boxplot_variability_example(
ovary.biased.in.eye, species=params$species.name, tissue=bias, ylab="Variability rank", color="#67005D"))
print(boxplot_variability_example(
ovary.biased.in.eye, species=params$species.name, tissue=bias, ylab="Variability rank", color="#00BFC4"))
}
} else {
bias <- "gonads"
gonads.biased.in.eye <-
expr.var.bias.by.condition[[bias]] %>%
dplyr::filter(Tissue==focal)
if (params$randomized.mean.expr) {
print(boxplot_variability_example(
gonads.biased.in.eye, species=params$species.name, tissue=bias, ylab="Variability rank", color="#FFFAFA"))
} else {
print(boxplot_variability_example(
gonads.biased.in.eye, species=params$species.name, tissue=bias, ylab="Variability rank", color="#67005D"))
print(boxplot_variability_example(
gonads.biased.in.eye, species=params$species.name, tissue=bias, ylab="Variability rank", color="#00BFC4"))
}
}
Multiple pairwise comparisons
Description
Variability of the set of x-biased genes expressed in organ i (not x) vs. variability of other organ-biased genes in organ i (excluding i-biased genes)
e.g., variability of brain-biased genes expressed in the ovary vs. variability of other organ-biased genes expressed in the ovary (excluding ovary-biased genes)
Exclude broadly expressed and focal-biased genes
if ("Sex" %in% colnames(expr.var.rank.common)) {
expr.var.bias.comparisons <-
lapply(c("F"="F","M"="M"), function(s) {
dplyr::bind_rows(expr.var.bias.by.condition[[s]], .id="Bias") %>%
dplyr::filter(!(TissueBias %in% c("broad","focal")))
}) %>%
dplyr::bind_rows()
} else {
expr.var.bias.comparisons <- expr.var.bias.by.condition %>%
dplyr::bind_rows(.id="Bias") %>%
dplyr::filter(!(TissueBias %in% c("broad","focal")))
}
Mean expression
Effect size
comparisons.mean.expr <- list()
comparisons.mean.expr$effect.size <-
compute_glass_delta_effect_size(expr.var.bias.comparisons, value="mean")
## `summarise()` has grouped output by 'Bias', 'Tissue'. You can override using the `.groups` argument.
Pairwise Wilcoxon test
# Complete
comparisons.mean.expr$wilcox.complete <-
compute_pairwise_comparisons(
comparisons.df=expr.var.bias.comparisons,
effect.size.df=comparisons.mean.expr$effect.size,
value="mean", apply.pvalue.cutoff=FALSE,
order.levels=levels(Tissue)
)
# Keep significant observations only
comparisons.mean.expr$wilcox.signif <-
compute_pairwise_comparisons(
comparisons.df=expr.var.bias.comparisons,
effect.size.df=comparisons.mean.expr$effect.size,
value="mean", apply.pvalue.cutoff=TRUE, adj.p=0.05,
order.levels=levels(Tissue))
Plot - Heatmap
heatmap_effect_size_pairwise_comparisons_blue2red(
comparisons.mean.expr$wilcox.complete, species=params$species.name, value="mean", order.levels=levels.order)
heatmap_effect_size_pairwise_comparisons(
comparisons.mean.expr$wilcox.signif, species=params$species.name, value="mean", order.levels=levels.order)
Log-coefficient of variation
Effect size
comparisons.log2cv <- list()
comparisons.log2cv$effect.size <-
compute_glass_delta_effect_size(expr.var.bias.comparisons, value="log2cv")
## `summarise()` has grouped output by 'Bias', 'Tissue'. You can override using the `.groups` argument.
Pairwise Wilcoxon test
# Complete
comparisons.log2cv$wilcox.complete <-
compute_pairwise_comparisons(
comparisons.df=expr.var.bias.comparisons,
effect.size.df=comparisons.log2cv$effect.size,
value="log2cv", apply.pvalue.cutoff=FALSE,
order.levels=levels(Tissue)
)
# Keep significant observations only
comparisons.log2cv$wilcox.signif <-
compute_pairwise_comparisons(
comparisons.df=expr.var.bias.comparisons,
effect.size.df=comparisons.log2cv$effect.size,
value="log2cv", apply.pvalue.cutoff=TRUE, adj.p=0.05,
order.levels=levels(Tissue))
Plot - Heatmap
heatmap_effect_size_pairwise_comparisons_blue2red(
comparisons.log2cv$wilcox.complete, species=params$species.name, value="log2cv", order.levels=levels.order)
heatmap_effect_size_pairwise_comparisons(
comparisons.log2cv$wilcox.signif, species=params$species.name, value="log2cv", order.levels=levels.order)
Residual variation
Effect size
comparisons.resid.var <- list()
comparisons.resid.var$effect.size <-
compute_glass_delta_effect_size(expr.var.bias.comparisons, value="residual_variation")
## `summarise()` has grouped output by 'Bias', 'Tissue'. You can override using the `.groups` argument.
Pairwise Wilcoxon test
# Complete
comparisons.resid.var$wilcox.complete <-
compute_pairwise_comparisons(
comparisons.df=expr.var.bias.comparisons,
effect.size.df=comparisons.resid.var$effect.size,
value="residual_variation", apply.pvalue.cutoff=FALSE,
order.levels=levels(Tissue)
)
# Keep significant observations only
comparisons.resid.var$wilcox.signif <-
compute_pairwise_comparisons(
comparisons.df=expr.var.bias.comparisons,
effect.size.df=comparisons.resid.var$effect.size,
value="residual_variation", apply.pvalue.cutoff=TRUE, adj.p=0.05,
order.levels=levels(Tissue))
Plot - Heatmap
heatmap_effect_size_pairwise_comparisons_blue2red(
comparisons.resid.var$wilcox.complete, species=params$species.name, value="residual_variation", order.levels=levels.order)
heatmap_effect_size_pairwise_comparisons(
comparisons.resid.var$wilcox.signif, species=params$species.name, value="residual_variation", order.levels=levels.order)
Variability rank
Effect size
comparisons.expr.var <- list()
comparisons.expr.var$effect.size <-
compute_glass_delta_effect_size(expr.var.bias.comparisons, value="variability")
## `summarise()` has grouped output by 'Bias', 'Tissue'. You can override using the `.groups` argument.
Pairwise Wilcoxon test
# Complete
comparisons.expr.var$wilcox.complete <-
compute_pairwise_comparisons(
comparisons.df=expr.var.bias.comparisons,
effect.size.df=comparisons.expr.var$effect.size,
value="variability", apply.pvalue.cutoff=FALSE,
order.levels=levels(Tissue)
)
# Keep significant observations only
comparisons.expr.var$wilcox.signif <-
compute_pairwise_comparisons(
comparisons.df=expr.var.bias.comparisons,
effect.size.df=comparisons.expr.var$effect.size,
value="variability", apply.pvalue.cutoff=TRUE, adj.p=0.05,
order.levels=levels(Tissue))
Plot - Heatmap
heatmap_effect_size_pairwise_comparisons_blue2red(
comparisons.expr.var$wilcox.complete, species=params$species.name, value="variability", order.levels=levels.order)
heatmap_effect_size_pairwise_comparisons(
comparisons.expr.var$wilcox.signif, species=params$species.name, value="variability", order.levels=levels.order)